1. Technical Field
The present disclosure relates to storage area networks.
2. Description of the Related Art
Storage Area Networks (SANs) are computer systems in which large mass storage devices such as Redundant Array of Independent Disks (RAID) devices are connected to a central processor or processors via high-speed network technology (as opposed to, for example, via a system bus). SANs are increasingly used to store vast amounts of information and their usage has grown exponentially with the rise of the Internet.
There are two general ways to implement SANs: centralized and decentralized. A centralized SAN ties multiple hosts into a single storage system with large amounts of cache and redundant power supplies. FIG. 1 illustrates a typical centralized SAN. Initiators, also known as hosts 100, 102, 104 communicate with a large mass storage device 106.
A decentralized SAN, on the other hand, connects multiple mass storage devices with a centralized controller, such as a switch, that coordinates storage between the hosts and the multiple mass storage devices. FIG. 2 illustrates a typical distributed SAN. Here, initiators 200, 202, 204 communicate with a virtual SAN comprised of a number of large mass storage devices 206, 208, 210 via a switch 212.
There are a number of various applications that can be utilized within a SAN, for example, volume management applications, data replication applications, data migration applications, and data protection applications, among many others. These applications are operated at either the host side or the storage side.
FIG. 3 illustrates the operation of an IO command in a typical SAN. The command 300 is sent from initiator 302 to storage 304. In this example, the command may be a read request. As such, storage 304 then sends back data items 306, 308, 310 to initiator 302. Once all the data has been sent, storage 304 sends back a response message 312.
Applications operated on the host side are able to shield the physical details of the operations from the storage side. Similarly, applications operated on the storage side are able to shield the physical details of the operations from the host side. However, in either implementation, users are often beholden to a single vendor. For example, should a user wish to implement a host-side application, any host utilizing the application must be from the vendor who distributed the host-side application. Likewise, should a user wish to implement a storage-side application, any storage utilizing the application must be from the vendor who distributed the storage-side application.